/** Appliquer le jQuery sur les balises select **/

/** on met la taille du select dans le js: pas très propre mais plus de problème sous ie8 **/
$(".combobox").select2({
	width: '40.75%',
});

/** afficher les selects que lorsque toute la page est chargé **/
$(document).ready(function() {
	$("#effectueDemandeForm").removeClass("hidden");
});

/** activer les infos bulles **/
$(document).tooltip();

/** Datepicker en francais **/
$.datepicker.setDefaults( $.datepicker.regional[ "fr" ] );

/** desactiver les selects par défaut**/
$("#categorie").select2("enable", false);
$("#souscategorie").select2("enable", false);
$("#nom").select2("enable", false);

/** Clique sur Type demande pour afficher les catégories */
$("#typeDemande").on("change", function(){
	$("#categorie").empty();
	$("#categorie").select2("val", "");
	recupererCategories();
	$("#souscategorie").empty();
	$("#souscategorie").select2("val", "");
	$("#nom").select2("val", "");
	$("#nom").empty();
	$("#categorie").select2("enable", false);
	$("#souscategorie").select2("enable", false);
	$("#nom").select2("enable", false);
	$("#checklist").empty();
	$('#cdparam').empty();
	$('#paramDemande').empty();
	$("#formTypeDemande").removeClass("error");
	$("#formTypeDemande .help-inline").remove();
	$("#fieldsetEffectuerDemande").addClass("hidden");
});

/** Fonction qui permet de récupérer les catégories de la base de données en fonction du type de demande sélectionné **/
function recupererCategories(){
	$.ajax({
		type : "POST",
		url : "recupererCategories.action",
		data : {
			idTypeDemande : $("#typeDemande").select2("val"),
		},
		success : function(response) {
			$("#categorie").select2("enable", true);
			$("#categorie").append('<option value=""/>');
			$.map( response.mapCategories, function(val, id) {
				option = jQuery("<option>",{
					'text':val,
					'value':id
				});
				$("#categorie").append(option);
			});
			selectionCategorieForcee();
		},
	});
	return false;
};

/** Si il n'y a qu'une seule catégorie, on force le choix **/
function selectionCategorieForcee(){
	if($("#categorie option").length === 2){
		$("#categorie").select2("val", $("#categorie option:eq(1)").val());
		recupererSousCategories();
		$("#formCategorieDemande").removeClass("error");
		$("#formCategorieDemande .help-inline").remove();
	}
}

/** Clique sur catégorie pour afficher les sous catégories **/
$("#categorie").on("change", function(){
	$("#souscategorie").empty();
	$("#souscategorie").select2("val", "");
	recupererSousCategories();
	$("#nom").empty();
	$("#nom").select2("val", "");
	$("#souscategorie").select2("enable", false);
	$("#nom").select2("enable", false);
	$("#checklist").empty();
	$('#cdparam').empty();
	$('#paramDemande').empty();
	$("#formCategorieDemande").removeClass("error");
	$("#formCategorieDemande .help-inline").remove();
	$("#fieldsetEffectuerDemande").addClass("hidden");
});

/** Fonction qui permet de récupérer les sous-catégories de la base de données en fonction de la catégorie sélectionnée **/
function recupererSousCategories(){
	$.ajax({
		type : "POST",
		url : "recupererSousCategories.action",
		data : {
			idCategorie : $("#categorie").val(),
		},
		success : function(response) {
			$("#souscategorie").select2("enable", true);
			$("#souscategorie").append('<option value=""/>');
			$.map( response.mapSousCategories, function(val, id) {
				option = jQuery("<option>",{
					'text':val,
					'value':id
				});
				$("#souscategorie").append(option);			
			});
			selectionSousCategorieForcee();
		},
	});
	return false;
}

/** Si il n'y a qu'une seule sous catégorie, on force le choix **/
function selectionSousCategorieForcee(){
	if($("#souscategorie option").length === 2){
		$("#souscategorie").select2("val", $("#souscategorie option:eq(1)").val());
		recupererDemandes();
		$("#formSousCategorieDemande").removeClass("error");
		$("#formSousCategorieDemande .help-inline").remove();
	}
}

/** Clique sur sous catégorie pour afficher les nom de demande **/
$("#souscategorie").on("change", function(){
	$("#nom").empty();
	$("#nom").select2("val", "");
	$("#nom").select2("enable", false);
	recupererDemandes();
	$("#checklist").empty();
	$('#cdparam').empty();
	$('#paramDemande').empty();
	$("#formSousCategorieDemande").removeClass("error");
	$("#formSousCategorieDemande .help-inline").remove();
	$("#fieldsetEffectuerDemande").addClass("hidden");
});


/** Fonction qui permet de récupérer les demandes de la base de données en fonction de la sous-catégorie sélectionnée **/
function recupererDemandes(){
	$.ajax({
		type : "POST",
		url : "recupererCDDemandes.action",
		data : {
			idSousCategorie : $("#souscategorie").val(),
		},
		success : function(response) {
			$("#nom").select2("enable", true);
			$("#nom").append('<option value=""/>');
			$.map( response.mapCDDemandes, function(val, id) {
				option = jQuery("<option>",{
					'text':val,
					'value':id
				});
				$("#nom").append(option);			
			});
		},
	});
	return false;
}

/** Choix du nom de demande pour afficher la checlist et les paramètres**/

$("#nom").on("change", function(){
	recupererChecklist();
	recupererCdParam();
	$("#checklist").empty();
	$('#paramDemande').empty();
	$("#formNomDemande").removeClass("error");
	$("#formNomDemande .help-inline").remove();
});

/** recuperer la liste des points de contrôle (checklist) **/

function recupererChecklist(){
	$.ajax({
		type : "POST",
		url : "recupererCDPointDeControle.action",
		data : {
			idDemande : $("#nom").val(),
		},
		success : function(response) {
			for(var i=0; i<response.listeIdCDPointsControle.length; i++){
				option = jQuery("<option>",{
					'text':response.listeNomsCDPointsControle[i],
					'value':response.listeIdCDPointsControle[i]
				});
				$("#checklist").append(option);			
			};
		},
	});
	return false;
}


/** recuperer le nom des paramètres **/

function recupererCdParam(){
	$.ajax({
		type : "POST",
		url : "recupererCDParametreDemande.action",
		data : {
			idDemande : $("#nom").val(),
		},
		success : function(response) {
			$("#fieldsetEffectuerDemande").removeClass("hidden");
			afficherParametres(response.res);
		},
	});
	return false;
}

/** choisir entre les parametres a afficher et selectionner et les parametres a faire rentrer par l'utilisateur **/

function afficherParametres(res){
	$.map( res, function(val, id) {
		saisie = verifierSaisie(id);
		if(saisie === "num"){
			afficherParametreNumASaisir(id,val);
		}
		if(saisie === "input"){
			afficherParametreASaisir(id,val);
		}
		if(saisie === "liste"){
			afficherListeASaisir(id,val);
		}
		if(saisie === "select"){
			afficherParametreAChoisir(id,val);
		}
		if(saisie === "selectmultiple"){
			afficherParametreMultipleAChoisir(id,val);
		}
		if(saisie === "date"){
			afficherDateASaisir(id,val);
		}
		if(saisie === "fichier"){
			afficherFichierAEntrer(id,val);
		}

	});
	affecterDatePickerAndSelect();
}

function afficherParametreNumASaisir(id,val){
	divGeneral = jQuery("<div>",{
		'id':'formParametresDemande',
		'class':'control-group'
	});


	label = jQuery("<label>",{
		'id':'label'+id,
		'class':'sr-only col-sm-2 control-label',
		'for':'paramsaisir'+id,
		'text': val
	});

	div = jQuery("<div>",{
		'id':'form2ParamDemande',
		'class':'col-sm-10'
	});

	input = jQuery("<input>",{
		'id':'paramsaisir'+id,
		'class':'form-control element numeric',
		'name':id,
		'type':'text',
		'maxlength':"255"
	});

	div.append(input);
	divGeneral.append(label);
	divGeneral.append(div);

	$('#paramDemande').append(divGeneral);
	verifierDescription(id);
	verifierNumeric(input);
};

/** vérifier si le champ est bien de type numérique **/
function verifierNumeric(input){
	input.keypress(function (e) {
		input.parent().find(".help-inline").remove();
		input.parent().parent().removeClass("warning");
		if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
			input.parent().parent().addClass("warning");
			span = jQuery("<span>",{
				'class':"help-inline",
				'text':properties_warning_num.innerHTML
			});
			if(input.parent().find(".help-inline").length == 0){
				input.parent().append(span);
			}
			return false;
		}
	});

}
/** afficher input **/
function afficherParametreASaisir(id,val){
	divGeneral = jQuery("<div>",{
		'id':'formParametresDemande',
		'class':'control-group'
	});


	label = jQuery("<label>",{
		'id':'label'+id,
		'class':'sr-only col-sm-2 control-label',
		'for':'paramsaisir'+id,
		'text': val
	});

	div = jQuery("<div>",{
		'id':'form2ParamDemande',
		'class':'col-sm-10'
	});

	input = jQuery("<input>",{
		'id':'paramsaisir'+id,
		'class':'form-control element',
		'name':id,
		'type':'text',
		'maxlength':"255"
	});


	div.append(input);
	divGeneral.append(label);
	divGeneral.append(div);

	$('#paramDemande').append(divGeneral);
	verifierDescription(id);
};

/** afficher input list **/
function afficherListeASaisir(id,val){
	divGeneral = jQuery("<div>",{
		'id':'formParametresDemande',
		'class':'control-group'
	});


	label = jQuery("<label>",{
		'id':'label'+id,
		'class':'sr-only col-sm-2 control-label',
		'for':'paramsaisir'+id,
		'text': val
	});

	div = jQuery("<div>",{
		'id':'form2ParamDemande',
		'class':'col-sm-10'
	});

	input = jQuery("<input>",{
		'id':'paramsaisir'+id,
		'class':'form-control element liste',
		'name':id,
		'type':'text',
		'maxlength':"255"
	});


	div.append(input);
	divGeneral.append(label);
	divGeneral.append(div);

	$('#paramDemande').append(divGeneral);
	verifierDescription(id);
}

/** afficher select **/
function afficherParametreAChoisir(id,val){
	divGeneral = jQuery("<div>",{
		'id':'formParametresDemande',
		'class':'control-group'
	});


	label = jQuery("<label>",{
		'id':'label'+id,
		'class':'sr-only col-sm-2 control-label',
		'for':'paramsaisir'+id,
		'text': val
	});

	div = jQuery("<div>",{
		'id':'form2ParamDemande',
		'class':'col-sm-10'
	});

	select = jQuery("<select>",{
		'id':'paramsaisir'+id,
		'name':id,
		'class':'form-control element',
	});

	recupererValeurParam(select, id);

	select.append('<option value=""/>');
	div.append(select);
	divGeneral.append(label);
	divGeneral.append(div);
	$('#paramDemande').append(divGeneral);
	verifierDescription(id);
};

/** afficher select multiple **/
function afficherParametreMultipleAChoisir(id,val){
	divGeneral = jQuery("<div>",{
		'id':'formParametresDemande',
		'class':'control-group'
	});


	label = jQuery("<label>",{
		'id':'label'+id,
		'class':'sr-only col-sm-2 control-label',
		'for':'paramsaisir'+id,
		'text': val
	});

	div = jQuery("<div>",{
		'id':'form2ParamDemande',
		'class':'col-sm-10'
	});

	select = jQuery("<select>",{
		'id':'paramsaisir'+id,
		'name':id,
		'class':'form-control element multiple',
		'multiple':''
	});

	recupererValeurParam(select, id);

	select.append('<option value=""/>');
	div.append(select);
	divGeneral.append(label);
	divGeneral.append(div);
	$('#paramDemande').append(divGeneral);
	verifierDescription(id);
};

/** afficher input type date **/
function afficherDateASaisir(id,val){
	divGeneral = jQuery("<div>",{
		'id':'formParametresDemande',
		'class':'control-group'
	});


	label = jQuery("<label>",{
		'id':'label'+id,
		'class':'sr-only col-sm-2 control-label',
		'for':'paramsaisir'+id,
		'text': val
	});

	div = jQuery("<div>",{
		'id':'form2ParamDemande',
		'class':'col-sm-10'
	});

	input = jQuery("<input>",{
		'id':'paramsaisir'+id,
		'class':'form-control element datepickerinput',
		'name':id,
		'type':'text',
		'maxlength':"255"
	});


	div.append(input);
	divGeneral.append(label);
	divGeneral.append(div);

	$('#paramDemande').append(divGeneral);
	verifierDescription(id);
};

/** afficher input type file **/
function afficherFichierAEntrer(id,val){
	divGeneral = jQuery("<div>",{
		'id':'formParametresDemande',
		'class':'control-group'
	});


	label = jQuery("<label>",{
		'id':'label'+id,
		'class':'sr-only col-sm-2 control-label',
		'for':'paramsaisir'+id,
		'text': val
	});

	div = jQuery("<div>",{
		'id':'form2ParamDemande',
		'class':'col-sm-10'
	});

	input = jQuery("<input>",{
		'id':'paramsaisir'+id,
		'class':'form-control element',
		'name':id,
		'type':'file',
	});


	div.append(input);
	divGeneral.append(label);
	divGeneral.append(div);

	$('#paramDemande').append(divGeneral);
	verifierDescription(id);
};

/** ajout des évènements sur le champs (hors paramètres) **/
$("#titre").keypress(function(){
	$("#formTitreDemande").removeClass("error");
	$("#formTitreDemande .help-inline").remove();
});

$("#reference").keypress(function(){
	$("#formReferenceDemande").removeClass("warning");
	$("#formReferenceDemande .help-inline").remove();
});

$("#commentaire").keypress(function(){
	$("#formCommentaireDemande").removeClass("warning");
	$("#formCommentaireDemande .help-inline").remove();
});

/** récupérer la valeur d'un paramètre **/
function recupererValeurParam(select, idParam){
	$.ajax({
		type : "POST",
		url : "recupererCDParametreDemandeValeurs.action",
		data : {
			idParamDemande : idParam,
		},
		success : function(response) {
			$.map( response.res, function(val, id) {
				option = jQuery("<option>",{
					'text':val,
					'value':val
				});
				select.append(option);			
			});
		},
	});
	return null;
}

/** vérifier la valeur de l'attribut saisie **/
function verifierSaisie(idParam){
	res = -1;
	$.ajax({
		type : "POST",
		url : "recuperationTypeSaisie.action",
		async: false,
		data : {
			idParamDemande : idParam,
		},
		success : function(response) {
			res = response.typeSaisie;
		},
	});
	return res;
}

/** vérifier la valeur de l'attribut description **/
function verifierDescription(idParam){
	$.ajax({
		type : "POST",
		url : "recupererDescriptionParametreDemande.action",
		data : {
			idParamDemande : idParam,
			idDemande : $("#nom").val()
		},
		success : function(response) {
			img = jQuery("<img>",{
				'src':url_img_label.innerHTML,
				'data-toggle': 'tooltip',
				'title':response.description
			});
			$("#label"+idParam).append(img);
		},
		error : function (XMLHttpRequest, textStatus, errorThrown){
		}
	});
	return null;
}

/** recuperer la valeur de l'attribut obligatoire **/
function verifierObligatoire(idParam){
	res = -1;
	$.ajax({
		type : "POST",
		url : "recuperationObligatoire.action",
		async: false,
		data : {
			idParamDemande : idParam,
			idDemande : $("#nom").val()
		},
		success : function(response) {
			res = response.obligatoire;
		},
	});
	return res;
}

/** vérifier le format d'une date **/
function verifierDate(date){
	res = -1;
	$.ajax({
		type : "POST",
		url : "verifierDate.action",
		async: false,
		data : {
			dateAVerifier : date,
		},
		success : function(response) {
			res = response.dateCorrecte;
		},
	});
	return res;
}

/** vérifier les champs (hors paramètres) **/
function validerSaisies(){
	validation = true;
	onChangeParametres();
	/** on récupère les valeurs de chaque select **/
	typeDemandeText = $("#typeDemande option:selected").text();
	categorieText=$("#categorie option:selected").text();
	sousCategorieText=$("#souscategorie option:selected").text();
	nomText=$("#nom option:selected").text();

	/** on enlève la classe error pour remettre par défaut **/
	$("#formTypeDemande").removeClass("error");
	$("#formCategorieDemande").removeClass("error");
	$("#formSousCategorieDemande").removeClass("error");
	$("#formNomDemande").removeClass("error");
	$("#formTitreDemande").removeClass("error");
	$("#formReferenceDemande").removeClass("error");
	$("#formCommentaireDemande").removeClass("error");

	$("#paramfixe .help-inline").remove();

	/** on test chaque select pour voir si il sélectionne qque chose */
	if (!$("#typeDemande option:selected").length || typeDemandeText === ""){
		$("#formTypeDemande").addClass("error");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_typeDemande.innerHTML
		});
		$("#form2TypeDemande").append(span);
		validation = false;
	}
	if (!$("#categorie option:selected").length || categorieText === ""){
		$("#formCategorieDemande").addClass("error");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_categorieDemande.innerHTML
		});
		$("#form2CategorieDemande").append(span);
		validation = false;
	}
	if (!$("#souscategorie option:selected").length || sousCategorieText ===""){
		$("#formSousCategorieDemande").addClass("error");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_sousCategorieDemande.innerHTML
		});
		$("#form2SousCategorieDemande").append(span);
		validation = false;
	}
	if (!$("#nom option:selected").length || nomText ===""){
		$("#formNomDemande").addClass("error");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_nomDemande.innerHTML
		});
		$("#form2NomDemande").append(span);
		validation = false;
	}

	/** On test les inputs pour vérifier qu'ils ne sont pas vide **/

	if (!$.trim($("#titre").val())) {
		$("#formTitreDemande").addClass("error");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_titreDemande.innerHTML
		});
		$("#form2TitreDemande").append(span);
		validation = false;
	}

	allField = true;
	if (!$.trim($("#reference").val())) {
		$("#formReferenceDemande").addClass("warning");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_referenceDemande.innerHTML
		});
		$("#form2ReferenceDemande").append(span);
		allField = false;
	}

	if (!$.trim($("#commentaire").val())) {
		$("#formCommentaireDemande").addClass("warning");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_commentaireDemande.innerHTML
		});
		$("#form2CommentaireDemande").append(span);
		allField = false;
	}

	if(isTitreExiste($("#titre").val()) === "true"){
		$("#formTitreDemande").addClass("error");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_doublon_titreDemande.innerHTML
		});
		$("#form2TitreDemande").append(span);
		validation = false;
	}
	return validation;
}

/** Vérifier les paramètres **/
function validerParametres(){
	var results = new Object();
	results["valid"] = true;
	results["warn"] = false;
	results["validDate"] = true;
	results["validListe"] = true;
	$("#fieldsetEffectuerDemande .help-inline").remove();
	$("#paramDemande #formParametresDemande").each(function(){
		$(this).removeClass("error");
		if($(this).find(".element").is("select")){
			if (!$(this).find(".element option:selected").length || $(this).find(".element option:selected").text() === ""){
				if(verifierObligatoire($(this).find("select").attr("name")) === "true"){
					$(this).addClass("error");
					span = jQuery("<span>",{
						'class':"help-inline",
						'text':properties_error_select.innerHTML
					});
					$(this).find("#form2ParamDemande").append(span);
					results["valid"] = false;
				}
				else {
					$(this).addClass("warning");
					span = jQuery("<span>",{
						'class':"help-inline",
						'text':properties_warning_parametres.innerHTML
					});
					$(this).find("#form2ParamDemande").append(span);
					results["warn"] = true;
				}
			}
		}
		if($(this).find(".element").is("input")){
			if($(this).find(".element").hasClass("hasDatepicker")){
				if(verifierDate($(this).find(".element").val()) != "false"){
					if (!$.trim($(this).find(".element").val())) {
						if(verifierObligatoire($(this).find(".element").attr("name")) === "true"){
							$(this).addClass("error");
							span = jQuery("<span>",{
								'class':"help-inline",
								'text':properties_error_date.innerHTML
							});
							$(this).find("#form2ParamDemande").append(span);
							results["valid"] = false;
						}
						else {
							$(this).addClass("warning");
							span = jQuery("<span>",{
								'class':"help-inline",
								'text':properties_warning_parametres.innerHTML
							});
							$(this).find("#form2ParamDemande").append(span);
							results["warn"] = true;
						}
					}
					$(this).find(".element").val((verifierDate($(this).find(".element").val())));
				}
				else {
					$(this).addClass("error");
					span = jQuery("<span>",{
						'class':"help-inline",
						'text':properties_error_date_format.innerHTML
					});
					$(this).find("#form2ParamDemande").append(span);
					results["validDate"] = false;
				}
			}
			else { 
				if($(this).find(".element").hasClass("numeric")){
					if (!$.trim($(this).find(".element").val())) {
						if(verifierObligatoire($(this).find(".element").attr("name")) === "true"){
							$(this).addClass("error");
							span = jQuery("<span>",{
								'class':"help-inline",
								'text':properties_error_input.innerHTML
							});
							$(this).find("#form2ParamDemande").append(span);
							results["valid"] = false;
						}
						else {
							$(this).addClass("warning");
							span = jQuery("<span>",{
								'class':"help-inline",
								'text':properties_warning_parametres.innerHTML
							});
							$(this).find("#form2ParamDemande").append(span);
							results["warn"] = true;
						}
					}
				}
				else {
					if($(this).find(".element").attr("type") === "file"){
						if (!$.trim($(this).find(".element").val())) {
							if(verifierObligatoire($(this).find(".element").attr("name")) === "true"){
								$(this).addClass("error");
								span = jQuery("<span>",{
									'class':"help-inline",
									'text':properties_error_file.innerHTML
								});
								$(this).find("#form2ParamDemande").append(span);
								results["valid"] = false;
							}
							else {
								$(this).addClass("warning");
								span = jQuery("<span>",{
									'class':"help-inline",
									'text':properties_warning_parametres.innerHTML
								});
								$(this).find("#form2ParamDemande").append(span);
								results["warn"] = true;
							}
						}
					} else {
						if($(this).find(".element").hasClass("liste")){
							if (!$.trim($(this).find(".element").val())) {
								if(verifierObligatoire($(this).find(".element").attr("name")) === "true"){
									$(this).addClass("error");
									span = jQuery("<span>",{
										'class':"help-inline",
										'text':properties_error_input.innerHTML
									});
									$(this).find("#form2ParamDemande").append(span);
									results["valid"] = false;
								}
								else {
									$(this).addClass("warning");
									span = jQuery("<span>",{
										'class':"help-inline",
										'text':properties_warning_parametres.innerHTML
									});
									$(this).find("#form2ParamDemande").append(span);
									results["warn"] = true;
								}
							} else {
								var regex = /^[^(,@&"()!_$*€£`+=\/;?# )]+(,[^(,@&"()!_$*€£`+=\/;?# )]+)*[^(,@&"()!_$*€£`+=\/;?# )]$/;
								var valueAVerifier = $(this).find(".element").val();
								if (!regex.test($(this).find(".element").val())){
									$(this).addClass("error");
									span = jQuery("<span>",{
										'class':"help-inline",
										'text':properties_error_input_liste.innerHTML
									});
									$(this).find("#form2ParamDemande").append(span);
									results["validListe"] = false;
								}
							}
						} else {
							if (!$.trim($(this).find(".element").val())) {
								if(verifierObligatoire($(this).find(".element").attr("name")) === "true"){
									$(this).addClass("error");
									span = jQuery("<span>",{
										'class':"help-inline",
										'text':properties_error_input.innerHTML
									});
									$(this).find("#form2ParamDemande").append(span);
									results["valid"] = false;
								}
								else {
									$(this).addClass("warning");
									span = jQuery("<span>",{
										'class':"help-inline",
										'text':properties_warning_parametres.innerHTML
									});
									$(this).find("#form2ParamDemande").append(span);
									results["warn"] = true;
								}	
							}
						}
					}
				}
			}
		}
	});
	return results;
}

/** afficher le modal **/
$("#effectueDemandeForm").submit(function(){
	$("#modal_warning").addClass("hidden");
	$("#modal_error").addClass("hidden");
	$("#modal_default").removeClass("hidden");
	$("#modal_error_date").addClass("hidden");
	$("#modal_error_liste").addClass("hidden");
	var results = validerParametres();
	if(results["warn"]===true){
		$("#modal_warning").removeClass("hidden");
		$("#modal_default").addClass("hidden");
	}
	if(results["valid"]===false){
		$("#modal_default").addClass("hidden");
		$("#modal_error").removeClass("hidden");
	}
	if(results["validDate"]===false){
		$("#modal_default").addClass("hidden");
		$("#modal_error_date").removeClass("hidden");
	}
	if(results["validListe"]===false){
		$("#modal_default").addClass("hidden");
		$("#modal_error_liste").removeClass("hidden");
	}
	if(validerSaisies()===false){
		$("#modal_default").addClass("hidden");
		$("#modal_error").removeClass("hidden");
	}
	$("#mymodal").modal('show');
	return false;
});

/** Valider le modal **/
$('#mymodal .okay-button').click(function() {
	var results = validerParametres();
	if(results["valid"]===true && results["validDate"]===true && results["validListe"]===true){
		if(validerSaisies()===true){
			$(".modal-header h4").replaceWith(properties_traitement.innerHTML);
			$(".modal-footer").remove();
			$(".modal-body #modal_default").remove();
			$(".modal-body #modal_warning").remove();
			$(".modal-body #modal_error").remove();
			$("#imgloading").removeClass("hidden");
			envoieFormulaire();
		} else {
			$("#mymodal").modal('hide');
		}
	} else {
		$("#mymodal").modal('hide');
	}
});

/** Affecter des évènements sur les paramètres **/
function onChangeParametres(){
	$("#paramDemande #formParametresDemande").each(function(){
		if($(this).find(".element").is("select")){
			$(this).find("select").on("change", function(){
				$(this).parent().parent().removeClass("error");
				$(this).parent().parent().removeClass("warning");
				$(this).parent().parent().find(".help-inline").remove();
			});
		}
		if($(this).find(".element").is("input")){
			if($(this).find(".element").attr("type") === "file"){
				$(this).find("input").on("change", function(){
					$(this).parent().parent().removeClass("error");
					$(this).parent().parent().removeClass("warning");
					$(this).parent().parent().find(".help-inline").remove();
				});
			} else {
				if($(this).find(".element").hasClass("hasDatepicker")){
					$(this).find("input").on("change", function(){
						$(this).parent().parent().removeClass("error");
						$(this).parent().parent().removeClass("warning");
						$(this).parent().parent().find(".help-inline").remove();
					});
				}else {
					$(this).find("input").keypress(function(){
						$(this).parent().parent().removeClass("error");
						$(this).parent().parent().removeClass("warning");
						$(this).parent().parent().find(".help-inline").remove();
					});
				}
			}
		}
	});
}


/** envoie du formulaire avec toutes les données **/
function envoieFormulaire(){
	var map = new Object();
	var array = new Array();
	var map2 = new Object();
	var map3 = new Object();
	$("#paramDemande #formParametresDemande").each(function(){
		if($(this).find(".element").is("select")){
			if($(this).find(".element option:selected").text() != ""){
				if($(this).find("select").hasClass("multiple")){
					$(this).find("select option:selected").each(function(i,selected){
						array.push($(selected).text());
					});
					map2[$(this).find("select").attr("name")]=array.join( "[SEP-*/]" );
				}else {
					map[$(this).find("select").attr("name")]=$(this).find("select option:selected").text();
				}
			}
		}
		if($(this).find(".element").is("input")){
			if($(this).find(".element").hasClass("liste")){
				map[$(this).find("input").attr("name")]=$(this).find("input").val();
			} else {
				if ($.trim($(this).find(".element").val())) {
					map[$(this).find("input").attr("name")]=$(this).find("input").val();
				}
			}
		}
	});

	id = $("#nom").val();
	reference = $("#reference").val();
	titre = $("#titre").val();
	commentaire = $("#commentaire").val();
	$.ajax({
		type : "POST",
		url : "effectuerDemandeForm.action",
		dataType: "json",
		data : {
			idCDDemande: id,
			referenceDemande: reference,
			titreDemande: titre,
			paramsDemande: map,
			paramsMulti: map2,
			commentaireDemande: commentaire
		},
		success : function(response) {
			$(location).attr('href',"accueil.action");
		},
	});
}

/** Vérification du titre par autocomplétion **/
$("#titre").keyup(function(){
	$("#formTitreDemande").removeClass("error");
	$("#formTitreDemande .help-inline").remove();
	if(isTitreExiste($("#titre").val()) === "true"){
		$("#formTitreDemande").addClass("error");
		span = jQuery("<span>",{
			'class':"help-inline",
			'text':properties_error_doublon_titreDemande.innerHTML
		});
		$("#form2TitreDemande").append(span);
	}
});

/** vérification si le titre existe déjà ou pas dans la bdd **/
function isTitreExiste(titre){
	error = "";
	$.ajax({
		type : "POST",
		url : "isTitreExiste.action",
		dataType: "json",
		async: false,
		data: {
			titreDemande : titre
		},
		success : function(response) {
			error = response.error;
		},
	});
	return error;
}

/** affecter le date picker aux paramètres le nécessitant **/
function affecterDatePickerAndSelect(){
	$(".datepickerinput").each(function(){
		$(this).datepicker({
			showOn: "button",
			buttonImage: url_img_datepicker.innerHTML,
			buttonImageOnly: true,
			defaultDate: 0
		});
		$(this).datepicker('setDate', '0');
	});
	$('#paramDemande select').select2({
		width: '20.50%',
	});
}
